
from mcp.server.fastmcp import FastMCP

#实例mcp
mcp = FastMCP("Weather MCP Server")

#查询城市编号及其映射关系
@mcp.resource(
    uri="file:///query/city_code/{name}",
    name="city_code",
    description="根据城市或地区名称来查询城市编号及其映射关系，第一列为城市或地区名称，第二列地区编号adcode，第三列为城市编号citycode",
    mime_type="text/plain",
)
def query_city_code(name:str):
    """
    根据城市或地区名称来查询城市编号及其映射关系
    :param name: 城市或地区名称
    :return: 城市编号及其映射关系
    """
    #匹配的内容
    contents = ""
    with open("city_code.data", "r",encoding="utf-8") as f:
        #使用行遍历的方式，查找城市或地区名称（模糊匹配）
        for line in f.readlines():
            if name in line:
                print(" 【服务端-->query_city_code】匹配到的城市或地区名称:",line)
                contents += line
    return contents


@mcp.tool()
def get_city_weather(adcode: str):
    """
    根据地区编号查询天气信息
    :param adcode: 地区编号
    :return: 天气预报查询结果信息
    """
    key="d64c259dde4173ce7be767be32eb2bb9"
    url = f"https://restapi.amap.com/v3/weather/weatherInfo?city={adcode}&key={key}"
    #调用高德天气API
    import requests
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()
    else:
        return {"error": "Failed to fetch weather data"}


if __name__ == "__main__":
    print(" MCP Server 启动中...")
    mcp.run(transport="sse")
